java为什么我可以将浮点传递给Double的构造函数?
在下面的代码中,我从double
、float
和String
构造了一些Double
变量。但是,根据文档,Double
只有接受double
和String
而不是float
的构造函数。那么这段代码是如何编译的呢
Double d1 = new Double(2.5);
Double d2 = new Double(2.5f); //Why can I pass a float here?
Double d3 = new Double("2.5");
# 1 楼答案
由于
float
通常可以转换为double
而不会丢失精度,因此float
可以自动加宽为double
。有关Java将自动扩展哪些类型的信息,请参见Widening Primitive Conversion链接文档中指出了有关
float
/double
转换的例外情况:# 2 楼答案
有两种类型的转换,加宽转换(隐式)和缩小转换(显式完成)
加宽>;将较低范围转换为较大范围
收窄>;将较大范围转换为较低范围(这会导致数据丢失)
所以float可以类型转换为Double,find picturization view